package com.CST.mapper.cst.ys;

import com.CST.dto.ys.NumAndYardDTO;
import com.CST.dto.ys.YsBusinessBudgetDTO;
import com.CST.entity.ys.YsAssetModifyRecords;
import com.CST.entity.ys.YsEtlAssetDetails;
import com.CST.vo.ys.ExpenseVO;
import com.CST.vo.ys.YsEtlAssetDetailsVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * 资产类
 * @author chengwen
 */
@Mapper
public interface YsBusinessAssetMapper extends BaseMapper<YsEtlAssetDetails> {
    /**
     * 查询资产类列表
     * @param dto 查询条件
     * @return result
     */
    List<YsEtlAssetDetailsVO> selectYsAssetInfoList(YsBusinessBudgetDTO dto);

    /**
     * 根据资产编码查询
     * @param ysEtlAssetDetails ysEtlAssetDetails
     * @return result
     */
    int selectByIdAndYard(YsEtlAssetDetails ysEtlAssetDetails);

    /**
     * 编辑
     * @param ysEtlAssetDetails ysEtlAssetDetails
     * @return result
     */
    int updateByIdAndYard(YsEtlAssetDetails ysEtlAssetDetails);

    /**
     * 插入发布数据
     * @param insertList 发布数据
     * @return result
     */
    int insertReleaseData(List<YsEtlAssetDetailsVO> insertList);

    /**
     * 删除发布数据
     * @return result
     */
    int deleteByDto();

    /**
     * 查询最大id
     * @return result
     */
    Integer selectMaxId();

    /**
     * 查询修订记录中是否存在
     * @param ysEtlAssetDetails ysEtlAssetDetails
     * @return result
     */
    int selectRecordIsExist(YsEtlAssetDetails ysEtlAssetDetails);

    /**
     * 插入修订记录
     * @param info 原始数据
     * @param record 操作内容
     * @return result
     */
    int insertRecord(@Param("info") YsEtlAssetDetails info, @Param("record") YsAssetModifyRecords record);

    /**
     * 查询修订记录
     * @param dto 查询条件
     * @return result
     */
    List<YsAssetModifyRecords> selectRecordByDto(YsBusinessBudgetDTO dto);

    /**
     * 查询撤销记录在现有列表中是否存在
     * @param dto dto
     * @return result
     */
    int selectRecordById(NumAndYardDTO dto);

    /**
     * 撤销
     * @param dto dto
     * @return result
     */
    int updateDetailDeleteFlagById(NumAndYardDTO dto);

    /**
     * 删除修订记录
     * @param id id
     * @return result
     */
    int DeleteRecordById(Integer id);

    List<ExpenseVO> selectYsAssetListCount(YsBusinessBudgetDTO dto);
}
